iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0

ORM (Object Relational Mapping) 是目前在做資料庫應用程式中,用來定義型別,然後透過這些定義好的型別建立資料庫和程式中的資料 Entity 對應的一種方法。

不過,這個 ORM 與本文的 Object Role Modeling (ORM) 是完全不同的東西,跟他們之間有關的就是他們都涉及資料庫,除此之外這篇文章不應混談 Role Modeling 跟 Relational Mapping。

對於資料庫設計的圖表以及其關聯性設計,我選了三種的建模方法來介紹:

  1. Object Role Modeling (物件角色建模)
  2. ER Diagram (Entity Relation) 最常用的建模圖
  3. Property Graph

這三種建模方法都是針對問題領域的建模方式,這篇文章要介紹的是其中之一 ORM。

ORM 使用較多文字語義化的方式來描述資料模型和他們的業務邏邏輯,這可以讓非專業人士也能夠讀懂他們的關係。

一個具體的例子來自開發此方法的 Dr. Terry Halpin 的網站:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753MxOYK48Lv3.png

從第一個例子,就可以知道這是一個用語義化的方式來呈現,我將圖稍微修改了一下,從這張圖可以知道這裡有兩個最主要的資料庫 Table 以及傳入的資料。

[學生.nr]於 (日期) 被授予 [學位.code]

[學生.nr] 攻讀 [學位.code]

在這段話中,描述了某個資料的學生攻讀目標學位 (可能是任何形式的學位,所以要用 code),等到完成攻讀後,學生就會在某個指定的資料日期被授予某個學位。

資料庫的設計就會有這兩個資料,而攻讀、被授予本身就是一個事務關聯。

從這張圖中,也可以看到在完成一個事務處理的當下,要組合哪一些資料進來:

https://ithelp.ithome.com.tw/upload/images/20210921/2009275340gnzVWrNL.png

所以連接的空格子不但要描述行為以外,還要給空格子關聯其他的物件。

Orm.net 本身也衍生了一個 ORM 很重要的使用方式: Conceptual Queries (概念查詢),剛才這個例子其實就是概念的查詢。

假設要使用語意化的方式來定義模型有哪些關聯,可以參考下圖:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753ETd8WLQuSu.png

在這裡可以得到一個結論,ORM 關注的點是物件被 [什麼事務] 關聯,這似乎很適合用來描述待開發的系統細節,例如下圖是一個頗複雜的電影院系統:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753SY551wFxAN.png

Wiki 上,ORM 的一個完整的範例圖是:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753kaUwZmQ75x.png

顯然這是某一個特定問題領域的 ORM 概念查詢,圖中先用圖的方式定義 Employee (員工)has, was born on, was hired on, uses 的事務關聯之後,在下方寫了語意化的概念:

  1. 所有員工的生日一定小於雇用日期
  2. 每個非執行級別的員工最多使用一台公司車
  3. 有執行級別的員工可以使用一些車 (大於 1 台)

我還發現了市面上有一個很酷的語意畫軟體,可以使用自然語言來建模 ORM:

Natural language interface to a Object-Role Modeling aware database
Yes

這個軟體是: Viev 開發的 Boston Professional,不過看起來是要錢。

https://ithelp.ithome.com.tw/upload/images/20210921/20092753gYZ3IdGwIm.png

除了上述對 ORM 圖形的看法之外,我在 [7] 另外找到了手寫的畫法,這個圖中包含了一些舉例:

https://ithelp.ithome.com.tw/upload/images/20210921/20092753vZ5TuppdCR.png

最上方的事務中,繪製了一個包含兩個事務的箭頭,這表示 【A 學生參加研討會 / 參加研討會的 A 學生】 之間是唯一性的關聯。

下方的查詢則不同,下方是【學生協辦研討會】,一個學生本身可以協辦很多個研討會,因此沒有唯一性,可是【P 研討會參與的學生】是有唯一性的,因為 P 研討會只會有一個 A 學生。

ORM 的相關文件和教學可以參考 [1] 的網站或是下方的參考中了解看看。

References:
[1] http://www.orm.net/
[2] https://victormorgante.medium.com/object-role-modeling-software-boston-d693ddb43cb8
[3] https://towardsdatascience.com/why-learn-object-role-modelling-4eebd93dcda2
[4] https://www.conceptdraw.com/solution-park/software-orm
[5] https://www.viev.com/index.php/products-menu/boston-professional
[6] http://epaper.gotop.com.tw/pdf/ACL021100.pdf
[7] https://victormorgante.medium.com/why-put-object-role-modeling-at-the-heart-of-a-knowledge-graph-database-f5891c58d42f
[8] http://agilemodeling.com/artifacts/ormDiagram.htm


上一篇
集合推理與歐拉圖
下一篇
屬性圖模型 Property Graph Diagram
系列文
後端工程師與圖的修練31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言